package Classes;

import java.io.Serializable;

/**
 * Classe para representar uma sala.
 * 
 * @author Daniela 
 */
public class Sala implements Serializable, Ocupavel {

    private String sala, bloco;
    private Mapa mapa;
    private Estante estante;

    /**
     * Construtor Sala com tres parametros
     * @param sala
     *          O nome ou numero da sala
     * @param bloco 
     *          O bloco onde a sala está localizada
     * @param telefone
     *          O telefone da sala
     * @throws Exception
     *          Excecao de sala e bloco null ou vazio
     */
    public Sala(String sala, String bloco) {
        this.sala = sala;
        this.bloco = bloco;
        estante = new Estante("Meus Livros");
    }

    /**
     * Recupera o nome ou numero da sala
     * @return 
     *          O nome ou numero da sala
     */
    @Override
    public String getSala() {
        return sala;
    }

    /**
     * Atribui um novo numero ou nome à sala
     * @param sala
     *          Novo nome ou numero a ser atribuído a sala
     */
    @Override
    public void setSala(String novaSala) {
        sala = novaSala;
    }

    /**
     * Recupera o nome ou numero do bloco
     * @return
     *          O nome ou numero do bloco
     */
    @Override
    public String getBloco() {
        return bloco;
    }

    /**
     * Atribui um novo nome ou numero ao bloco
     * @param bloco 
     *          Novo nome ou numero a ser atribuido ao bloco
     */
    @Override
    public void setBloco(String novoBloco) {
        bloco = novoBloco;
    }

    /**
     * Recupera o mapa
     * @return 
     *          O mapa
     */
    @Override
    public Mapa getMapa() {
        return mapa;
    }

    /** 
     * Atribui um novo mapa
     * @param mapa
     */
    @Override
    public void setMapa(Mapa novoMapa) {
        mapa = novoMapa;
    }

    /**
     * Recupera a estante de itens
     * @return 
     *      A estante
     */
    @Override
    public Estante getEstante() {
        return estante;
    }

    /**
     * Atribui uma nova estante
     * @param novaEstante 
     */
    @Override
    public void setEstante(Estante novaEstante) {
        estante = novaEstante;
    }
}
